package cuiyt.datastructure.heap;

/**
 * @author cyt
 * @describe 二叉堆的接口
 * @create 2021-01-10 12:33
 */
public interface Heap<E> {
    /**
     * 大小
     *
     * @return
     */
    int size();

    /**
     * 是否为空
     *
     * @return
     */
    boolean isEmpty();

    /**
     * 清空
     *
     * @return
     */
    void clear();

    /**
     * 添加一个元素
     *
     * @param element
     * @return
     */
    void add(E element);

    /**
     * 得到 堆顶元素
     *
     * @return
     */
    E get();

    /**
     * 删除堆顶元素
     *
     * @return
     */
    E remove();

    /**
     * 删除堆顶元素的时候， 添加一个元素
     *
     * @param element
     * @return
     */
    E replace(E element);
}
